core_sources = files(
    'rygel-connection-manager.vala',
    'rygel-basic-management.vala',
    'rygel-basic-management-test.vala',
    'rygel-basic-management-test-ping.vala',
    'rygel-basic-management-test-nslookup.vala',
    'rygel-basic-management-test-traceroute.vala',
    'rygel-description-file.vala',
    'rygel-dlna-profile.vala',
    'rygel-energy-management.vala',
    'rygel-root-device.vala',
    'rygel-root-device-factory.vala',
    'rygel-dbus-interface.vala',
    'rygel-log-handler.vala',
    'rygel-meta-config.vala',
    'rygel-plugin-loader.vala',
    'rygel-recursive-module-loader.vala',
    'rygel-plugin.vala',
    'rygel-resource-info.vala',
    'rygel-media-device.vala',
    'rygel-configuration.vala',
    'rygel-base-configuration.vala',
    'rygel-cmdline-config.vala',
    'rygel-environment-config.vala',
    'rygel-user-config.vala',
    'rygel-state-machine.vala',
    'rygel-v1-hacks.vala',
    'rygel-icon-info.vala',
    'rygel-xml-utils.vala',
    'rygel-plugin-information.vala',
    'rygel-energy-management-helper.c',
    'rygel-build-config.vapi')

build_config = declare_dependency(include_directories : config_include,
                                  sources : 'rygel-build-config.vapi')


# Rygel GIR generation is a tad special. We need to hammer in custom namespaces
# since the libraries used to be in one binary. So
# Step one: Build the library, generate the GIR from vala but do not install it
core_lib = library('rygel-core-2.8', core_sources,
        dependencies : core_deps,
        include_directories: [config_include, include_directories('.')],
        version: lib_version,
        darwin_versions: darwin_versions,
        c_args : ['-DG_LOG_DOMAIN="RygelCore"'],
        vala_gir : 'Rygel-2.8.gir',
        vala_header : 'rygel-core.h',
        install: true,
        install_dir : [true, rygel_includedir, true, false])
install_data('rygel-core-2.8.deps', install_dir : rygel_vapidir)

if g_ir_compiler.found()
# Step two: Do the namespace magic with sed
# We cannot use input: here since the generated ninja build file does not seem
# to know that Rygel-2.8.gir is a result of building rygel-core-2.8 target
# The custom_target call depends on the core_lib to make sure it is build before
# and the name of the generated GIR is passed directly to sed as part of the
# commandline
core_gir = custom_target('RygelCore-2.8.gir',
              command: [sed, '-e', 's,Rygel[.],RygelCore.,g',
                        '-e', 's,namespace name="Rygel",namespace name="RygelCore",g',
                        join_paths(meson.current_build_dir(), 'Rygel-2.8.gir')],
              depends: core_lib,
              output: 'RygelCore-2.8.gir',
              capture: true,
              install: true,
              install_dir: gir_dir)

# Step three: Compile the typelib. The dependency issue is similar to step two,
# so we depend on the custom_target from that step and pass the input through
# commandline.
custom_target('RygelCore-2.8.typelib',
               command: [g_ir_compiler, '--output', '@OUTPUT@', join_paths(meson.current_build_dir(), 'RygelCore-2.8.gir')],
               output: 'RygelCore-2.8.typelib',
               depends: [ core_lib, core_gir ],
               install: true,
               install_dir: typelib_dir)
endif

# need to add to get the current build dir as include dir
rygel_core = declare_dependency(include_directories: include_directories('.'),
                                dependencies: core_deps,
                                link_with: core_lib)

# necessary to be able to pass it to g-ir-compiler in other libs
core_girdir = meson.current_build_dir()
